/**
 * 栈就是和列表类似的一种数据结构,它可用来解决计算机世界里的很多问题。
 * 栈是一种高效的数据结构,因为数据只能在栈顶添加或删除,所以这样的操作很快,而且容易实现。
 * 栈的使用遍布程序语言实现的方方面面,从表达式求值到处理函数调用。
 * @constructor
 */
function Stack() {
    this.dataStore = [];
    this.top = 0;
    this.push = push;
    this.pop = pop;
    this.peek = peek;
    this.clear = clear;
    this.length = length;


    function push(element) {
        this.dataStore[this.top++] = element;
    }

    function pop() {
        return this.dataStore[--this.top];
    }

    function peek() {
        return this.dataStore[this.top - 1];
    }

    function length() {
        return this.top;
    }

    /**
     * 这边只是下标更新,实际的数据没有更新
     */
    function clear() {
        this.top = 0;
    }
}

function print(x) {
    console.log(x);
}

var s = new Stack();
s.push("David");
s.push("Raymond");
s.push("Bryan");
print("length: " + s.length());
print(s.peek());
var popped = s.pop();
print("The popped element is: " + popped);
print(s.peek());
s.push("Cynthia");
print(s.peek());
s.clear();
print("length: " + s.length());
print(s.peek());
s.push("Clayton");
print(s.peek());